iT邦幫忙

DAY 18
1

當ASP.NET MVC 遇見 Angular.js MVC 客戶管理系統系列 第 18

[鐵人30天]當ASP.NET MVC 遇見 Angular.js MVC 客戶管理系統(18) – Entity FrameWork 與 SP

  • 分享至 

  • xImage
  •  

* 本篇目標

建立SQL SP,並於Entity FrameWork加入

* 前言

接下來幾篇,會開始介紹報表開發

* Stored Procedure(預存程序)

早期開發上,多半習慣將DAL層放入MS SQL的Stored Procedure,但我遇過公司是將所有商業邏輯也寫在SP裡的,那維護上會非常的痛苦,彈性也非常的低,Entity Framework出來後將DataBase物件化,讓不會懂SQL的人也可以去做資料的處理,且如果今天資料庫切換了,也只要將Conncetion修改,所做的工不會太大。但實務上一個系統常常會有一些報表要製作,報表通常牽扯到非常多的資料表,這時候用EF來講效能會非常的差,我就會將這些"清單型邏輯",這些複雜Join邏輯寫成Stored Procedure。

* 建立SP

此範例很簡單,我們將兩個資料表建立起來(實務上可能很複雜)

USE [Northwind]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

-- sp_Customer_Orders
ALTER proc [dbo].[sp_Customer_Orders]

as

DECLARE @errorMsg nvarchar(255)

begin
SET NOCOUNT ON;

--取得訂單所對應的客戶
SELECT Orders.OrderID,Orders.OrderDate,Customers.CustomerID,Customers.ContactName
FROM Orders inner join Customers on Orders.CustomerID = Customers.CustomerID

end

接著在實體模組加入

加入剛剛建立的SP

接著我們在BLL層建立一個OrderSevice直接使用,不須知道他的join邏輯

Entity Framework也幫我們產生好相對應的Class,相當方便

而Web專案直接像Service要資料

取得結果

本系列程式原始碼請至我的Github下載 https://github.com/kyleap

** 如內容有誤請告知,將進行修改,謝謝 **


上一篇
[鐵人30天]當ASP.NET MVC 遇見 Angular.js MVC 客戶管理系統(17) – 多國語系-2
下一篇
[鐵人30天]當ASP.NET MVC 遇見 Angular.js MVC 客戶管理系統(19) – ReportViewer -設計rdlc檔
系列文
當ASP.NET MVC 遇見 Angular.js MVC 客戶管理系統30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言